package com.demo.search.context;

import org.springframework.core.NamedThreadLocal;
import org.springframework.util.Assert;

public abstract class IndexContextHolder {

	/**
	 * 本地线程局部变量:将索引上下文存储到线程中
	 */
	private static final ThreadLocal<IndexContext> contextHolder = new NamedThreadLocal<IndexContext>("LuceneIndex context");

	/**
	 * 清除上下文容器
	 */
	public static void clearContext() {
		contextHolder.remove();
	}
	
	/**
	 * 返回索引上下文容器,如果不存在,新建一个.
	 * @return 索引上下文
	 */
	public static IndexContext getContext() {
		IndexContext ctx = contextHolder.get();
//		if (ctx == null) {
//			ctx = createEmptyContext();
//			contextHolder.set(ctx);
//		}
		return ctx;
	}

	/**
	 * 设置索引上下文容器
	 * @param context 索引上下文容器
	 */
	public static void setContext(IndexContext context) {
		Assert.notNull(context, "Only non-null IndexContext instances are permitted");
		contextHolder.set(context);
	}
//	/**
//	 * 创建索引上下文容器对象
//	 * @return 简单的索引上下文容器对象
//	 */
//	protected static IndexContext createEmptyContext() {
//		return new LocalIndexContext(null);
//	}
}
